<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Three.js Demo</title>
  <style>
    html, body {
      margin: 0;
      padding: 0;
      height: 100%;
    }
  </style>
</head>
<body>
  
  <script src="../lib/three.js"></script>
  <script src="../lib/OrbitControls.js"></script>
  <script>
    const renderer = new THREE.WebGLRenderer();
    renderer.setSize(window.innerWidth, window.innerHeight);
    document.body.appendChild(renderer.domElement);
    const camera = new THREE.PerspectiveCamera(45, window.innerWidth/window.innerHeight, 1, 500);
    camera.position.set(0, 0, 500);
    camera.lookAt(0, 0, 0);
    const scene = new THREE.Scene();

    const geometry = new THREE.Geometry();
    const R = 80;
    const arc = new THREE.ArcCurve(0, 0, R, 0, Math.PI, true);
    const line1 = new THREE.LineCurve(new THREE.Vector2(R, 200), new THREE.Vector2(R, 0, 0));
    const line2 = new THREE.LineCurve(new THREE.Vector2(-R, 0), new THREE.Vector2(-R, 200, 0));
    const CurvePath = new THREE.CurvePath();
    CurvePath.curves.push(line1, arc, line2);
    const points = CurvePath.getPoints(200);
    geometry.setFromPoints(points);
    const material = new THREE.LineBasicMaterial({
      color: 0xffffff
    });
    const line = new THREE.Line(geometry, material);
    scene.add(line);

    renderer.render(scene, camera);
  </script>
</body>
</html>